/**
 * 数据监测分析
 */
$(function(){
	DataMonitor.init();
});
var DataMonitor = {
	init: function(){
		var me = this;
		me.initQueryTime();
		me.initTableTitle();
		me.initEvent();
		me.barChart = this.initLineChart();
		//加载车辆下拉框
		me.loadVehicleList();
		//默认查询
		$("#queryBtn").trigger("click");
	},
	getToday : function(){
		var todayDate = new Date();
        var yyyy = todayDate.getFullYear();
        var mm = todayDate.getMonth()+1;
        var dd = todayDate.getDate();  
        if (mm.toString().length == 1) {
	        mm = '0' + mm;
	    }
	    if (dd.toString().length == 1) {
	        dd = '0' + dd;
	    }
        return yyyy + '-' + mm + '-' + dd;
	},
    initQueryTime:function(){
        var todayDate = new Date();
        if(flag!="false"){        
        	var todayDateStr = DataMonitor.getToday();
        	$("#inputStartDate").val(todayDateStr);
   	        $("#inputEndDate").val(todayDateStr);
        }else{	
	        var beforeDate = new Date(todayDate-86400000*1); //前一天
		    var yyyy = beforeDate.getFullYear(), mm = (beforeDate.getMonth() + 1).toString(), dd = beforeDate.getDate().toString();
		    if (mm.length == 1) {
		        mm = '0' + mm;
		    }
		    if (dd.length == 1) {
		        dd = '0' + dd;
		    }
	        $("#inputEndDate").val(yyyy + '-' + mm + '-' + dd);
	        beforeDate = new Date(todayDate-86400000*7);
	        var yyyy = beforeDate.getFullYear(), mm = (beforeDate.getMonth() + 1).toString(), dd = beforeDate.getDate().toString();
		    if (mm.length == 1) {
		        mm = '0' + mm;
		    }
		    if (dd.length == 1) {
		        dd = '0' + dd;
		    }
	        $("#inputStartDate").val(yyyy + '-' + mm + '-' + dd);
        }
			
    },
	initEvent: function(){
		$("#exceptionType").select2();
		$("#queryBtn").on('click',function(){
			var startTime = $("#inputStartDate").val() + " 00:00:00";
			var endTime = $("#inputEndDate").val() + " 00:00:00";
			var end_str = (endTime).replace(/-/g,"/");//一般得到的时间的格式都是：yyyy-MM-dd hh24:mi:ss，所以我就用了这个做例子，是/的格式，就不用replace了。  
			var end_date = new Date(end_str).getTime();//将字符串转化为时间  
			//开始时间  
			var sta_str = (startTime).replace(/-/g,"/");  
			var sta_date = new Date(sta_str).getTime();
			var days = (end_date - sta_date)/(1000 * 60 * 60 * 24);
			if (days < 0) {
	            global.ajaxLoading.pop("开始时间不能大于结束时间", false, 2000);
	            return;
            }
			if (days > 7) {
	            global.ajaxLoading.pop("平台报警查询不能超过7天", false, 2000);
	            return;
            }
			DataMonitor.queryBarChartData();
			DataMonitor.tableReload();
		});
    	$("#exportExcel").on('click',function(){
    		DataMonitor.exportExcel();
    	});
        $("#confirmExport").click(function () {
        	DataMonitor.exportComfirm();
        })
	},
    // 获取查询条件
    getParams: function () {
    	var exceptionType = $("#exceptionType").val();
    	var vehicleId = $.trim($("#selectVehicleSel").val());
        var startTime = $("#inputStartDate").val();
        var endTime = $("#inputEndDate").val();
        var params = [{
        	name: 'exceptionType',
            value: exceptionType
        }, {
        	name: 'vehicleId',
            value: vehicleId
        }, {
            name: 'startTime',
            value: startTime
        }, {
            name: 'endTime',
            value: endTime
        }];
        return params;
    },
    //加载车牌号列表
    loadVehicleList : function(){
    	$("#selectVehicleSel").select2({
	        theme: "default",
	        allowClear: true,
	        placeholder: "全部车辆",
	        ajax:{
	            url:appCtx + "/system/common/selectVehicle.html",
	            dataType:"json",
	            delay:250,
	            data:function(params){
	                return {
	                    name: params.term,
	                    page: params.page || 1
	                };
	            },
	            cache:true,
	            processResults: function (res, params) {
			    	if(res){
			    		var options = [];
			    		var option = {"id":" ", "text":"全部车辆"};
			    		options.push(option);
	    				$.each(res,function(index,obj) {
	    					var option = {"id":obj.id, "text":obj.vehicle_no};
    	                    options.push(option);
	    				});
    	                return {
    	                	results: options,
    	                    pagination: {
    	                        more:false
    	                    }
    	                };
			    	}
	            },
	            escapeMarkup: function (markup) { return markup; },
	            minimumInputLength: 1
	        }
	    });
    },
	/**
	 *	柱状图
	 */
    initLineChart : function(){
    	var me = this;
        var option = {
    		/*title:{text:'企业问题车辆统计',x:'center',textStyle:{fontSize:'12px'} },*/
    		//color : ['#3398DB'],
    		tooltip : {
                trigger: 'axis'
            },
            legend: {
                data:['业户名称']
            },
            grid: {
		        left: '40px',
		        top:'40px',
		        right: 12,
//		        containLabel: true
		    },
            xAxis : [
                {	
                	type : 'category',
		            data : []
                }
            ],
            yAxis : [
                {
                    type : 'value',
                    name: '车辆数/辆'
                }
            ],
            series : [
            	{
		            name:'轨迹异常',
		            type:'line',
		            data:[],
		            itemStyle:{
		            	normal:{
		            		color:"#F33513"
		            	}
		            }
            	 },
            	 {
 		            name:'报警异常',
 		            type:'line',
 		            data:[],
 		           itemStyle:{
		            	normal:{
		            		color:"#33DC81"
		            	}
		            }
             	 },
            	 {
 		            name:'拍照异常',
 		            type:'line',
 		            data:[],
 		           itemStyle:{
		            	normal:{
		            		color:"#3398DB"
		            	}
		            }
             	 }
            ],
	    };
        var myChart = echarts.init(document.getElementById('lineChart'));
        myChart.setOption(option);
        window.onresize = myChart.resize;
        myChart.on('click', function(param){
        	var queryTime = me.queryDate;
         	var dayTime = $("#inputDayDate").val();
         	var monthTime = $("#inputMonthDate").val();
         	var enterpriseList = me.enterpriseList;
        	var enterprise_name = enterpriseList[param.dataIndex];
        	var queryChose="ent";
        	$("#resultTable").flexOptions({
	            	url: appCtx + "/report/abnomalVe/getAbnomalVeTable.html?time="+ new Date().getTime(),
	                params: [{
	                	name: 'queryTime',
	                    value: queryTime
	                }, {
	                    name: 'dayTime',
	                    value: dayTime
	                }, {
	                	name:"monthTime",
	            		value:monthTime
	                }, {
	                	name:"queryChose",
	            		value:queryChose
	                }, {
	                    name: 'enterprise_name',
	                    value: enterprise_name
	                }],//设置查询参数
	                newp: 1
	            }).flexReload();
        });
        return {
         	refash : function(option){
                myChart.setOption(option);
        	},
        	option : option,
        	barChartDom : myChart
        };
    },
	/**
	 * 加载柱状图数据
	 */
	queryBarChartData: function(){
		var me = this;
		$.ajax({
			type : 'post',
			data: me.getParams(),
			async : true,
			url : appCtx+"/report/dataMonitor/getLineChartData.html?time="+ new Date().getTime(),
			cache : false,
			dataType : "JSON",
			success : function(data) {
				var option = me.barChart.option;
				option.xAxis[0].data =data.xAxisData; //['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'];
				option.series[0].data =data.series[0];// [10, 52, 200, 334, 390, 330, 220];
				option.series[1].data =data.series[1];
				option.series[2].data =data.series[2];
				me.barChart.refash(option);
				//me.enterpriseList = data.xAxisData;
			}
		});
	},
    initTableTitle:function(){
        var getVehicleColor = function(vehicle_color){
        	return global.carColor(vehicle_color);
        };
        var getAlarm_src = function(alarm_src){
        	if(alarm_src == 1){
        		return "终端";
        	}else if(alarm_src == 2){
        		return "企业平台";
        	}
        	else if(alarm_src == 3){
        		return "政府平台";
        	}
       };
       var getFormatTime = function (msg){
	  	    if (msg != "" && null != msg && undefined != msg ) {
	  	    	var outTime = "0";
		  		var date = new Date(parseInt(msg)); 
	  		    var y = date.getFullYear();    
	  		    var m = date.getMonth() + 1;    
	  		    m = m < 10 ? ('0' + m) : m;    
	  		    var d = date.getDate();    
	  		    d = d < 10 ? ('0' + d) : d;    
	  		    outTime = y + '-' + m + '-' + d;
	  		    return outTime;
		  	}else{
		  		return "";
		  	}
		};
		var getExceptionType = function(type){
			if(type == 1){
				return "轨迹异常";
			}else if(type == 2){
				return "报警异常";
			}
			else if(type == 3){
				return "拍照异常";
			}
		};
    	$("#objTable").flexigrid({
	            dataType : 'json',
	            colModel : [{
	                display : '车牌号',
	                name : 'vehicle_no',
	                width : 10,
	                sortable:false,
	                align : 'left'
	            },{
	                display : '颜色',
	                width : 5,
	                name : 'vehicle_color',
	                align : 'left',
	                sortable:false,
	                paramcolnames:['vehicle_color'],
	                handlefunction : getVehicleColor
	            },{
	            	display : '业户名称',
	            	name : 'enterprise_name',
	            	width : 17,
	            	align : 'left',
	            	sortable:false
	            },{
	                display : '平台名称',
	                name : 'platform_name',
	                width : 17,
	                align : 'left',
	                sortable:false,
	            },{
	            	display : '异常类型',
	            	name : 'exception_type',
	            	width : 8,
	            	align : 'left',
	            	sortable:false,
	                paramcolnames:['exception_type'],
	                handlefunction : getExceptionType
	            },{
	                display : '报警来源',
	                name : 'alarm_src',
	                width : 8,
	                align : 'left',
	                sortable:false,
	                paramcolnames:['alarm_src'],
	                handlefunction : getAlarm_src
	            },{
	                display : '异常时间',
	                name : 'exception_time',
	                width : 15,
	                align : 'left',
	                sortable:false,
	                paramcolnames:['exception_time'],
	                handlefunction : getFormatTime
	            },{
	                display : '异常内容',
	                name : 'exception_content',
	                width : 20,
	                align : 'left',
	                sortable:false,
	            }] ,
	            usepager : true,// 是否分页，默认为true。
	            resizable : false,
				sortname : "id",// 第一次加载数据时排序列
				sortorder : "desc",// 第一次加载数据时排序类型
				usepager : true,// 是否分页，默认为true
				nowrap: true, //是否不换行
				showToggleBtn : false,
				showTableToggleBtn : true,// 是否显示收起/打开按钮,默认不显示。
				useRp : true,// 是否可以动态设置每页显示的结果数，默认为false。
				rp : 10,// 每页记录数，默认为10
				rpOptions: [10, 20, 50, 100], // 每页结果数
				checkbox : false,// 是否要多选框,默认为false。
				rowId : 'id',// 多选框绑定行的id,只有checkbox : true时才有效。
	            height:380,
	            width:$('.detail-report').width(),
	            widthType:"%"
	         });	 
    },
	tableReload: function(){
		$("#objTable").flexOptions({
			newp :1,// 设置起始页
			url : appCtx + "/report/dataMonitor/getTableData.html",
			params : DataMonitor.getParams()
		}).flexReload();
	},
	exportExcel:function(){
		var options = $("#objTable").getOptions();
        var total = options.total;
        if (total == 0) {
            global.ajaxLoading.pop("无导出数据", false, 2000);
            return;
        }
        var pages = options.pages;
        //设置默认的开始结束页
        $("#StartPageIndex").val(1);
        $("#EndPageIndex").val(pages);
        //显示导出窗口
        $("#exportModal").modal('show');
	},
    exportComfirm: function(){
    	var me = this;
    	var options = $("#objTable").getOptions();
        //总记录数
        var total = options.total;
        //开始页数
        var StartPage = $("#StartPageIndex").val();
        //结束页数
        var EndPage = $("#EndPageIndex").val();
        var validate = true;
        var msg = "";
        if (!StartPage || StartPage == 0) {
            msg += "【起始页不能为空或者0】";
            validate = false;
        }
        if (!EndPage || EndPage == 0) {
            msg += "【结束页不能为空或者0】";
            validate = false;
        }

        if (StartPage && EndPage && EndPage < StartPage) {
            msg += "【结束页要大于起始页】";
            validate = false;
        }
        if (!validate) {
            global.ajaxLoading.pop(msg, false, 2000);
            return;
        }
        $('#exportModal').modal('hide');
        global.ajaxLoading.pop("正在导出,请稍后.....", true, 2000);
        //每页大小
        var pagesize = options.rp;
        //获取导出的参数
        var exportParams = options.exportParams;
        if ((EndPage - StartPage + 1) * pagesize > 60000 && total > 60000) {
        	global.ajaxLoading.pop("最多只能导出60000条数据", true, 2000);
            return
        }
		var header1 = JSON.stringify(me.getColumn());
		//表头
		var colModelList=new Array();
		colModelList.push(header1);
		var colModel= $.toJSON(colModelList);
		var param =  {
				StartPage:StartPage,
				EndPage:EndPage,
				PageSize:pagesize,
				startTime:$("#inputStartDate").val()+" 00:00:00",
				endTime: $("#inputEndDate").val()+" 23:59:59",
				alarmType: $("#alarmType").val(),
				colModel:colModel,
				title:"报警综合分析报表",
		};
		post(appCtx+"report/dataMonitor/exportQueryResult.html",param);
	},
	getColumn:function(){
		return [{

            display : '车牌号',
            name : 'vehicle_no',
            width : 100,
            align : 'left'
        },{
            display : '颜色',
            width : 50,
            name : 'vehicle_color',
            align : 'left',
        },{
        	display : '业户名称',
        	name : 'enterprise_name',
        	width : 170,
        	align : 'left',
        },{
            display : '平台名称',
            name : 'platform_name',
            width : 170,
            align : 'left',
        },{
        	display : '异常类型',
        	name : 'exception_type',
        	width : 80,
        	align : 'left',
        },{
            display : '报警来源',
            name : 'alarm_src',
            width : 80,
            align : 'left',
        },{
            display : '异常时间',
            name : 'exception_time',
            width : 150,
            align : 'left',
        },{
            display : '异常内容',
            name : 'exception_content',
            width : 200,
            align : 'left',
        }]
	}
};
